home *** CD-ROM | disk | FTP | other *** search
/ Amiga Format CD 43 / Amiga Format CD43 (1999)(Future Publishing)(GB)(Track 1 of 2)[!][issue 1999-09].iso / -serious- / archivers / xfd / developer / sources / asm / xfdseghead.a < prev   
Text File  |  1999-06-14  |  2KB  |  99 lines

  1. * Objectheader
  2. *
  3. *    Name:        xfdSegHead.a
  4. *    Author:        SDI
  5. *    Distribution:    PD
  6. *    Description:    XFD external test header (program seglist startup)
  7. *    Compileropts:    -
  8. *    Linkeropts:    -
  9. *
  10. * 1.0   08.01.99 : first version
  11.  
  12.         INCLUDE    "libraries/xfdmaster.i"
  13.         INCLUDE    "exec/memory.i"
  14.         INCLUDE    "dos/dos.i"
  15.         INCLUDE "dos/dosextens.i"
  16.  
  17.         MOVEA.L    A0,A5
  18.         MOVE.L    D0,D7            * store them
  19.  
  20.         * get dos library opened
  21.         MOVEQ    #33,D0
  22.         MOVEA.L    4.W,A6
  23.         LEA.L    DosName(PC),A1
  24.         JSR    _LVOOpenLibrary(A6)
  25.         TST.L    D0
  26.         BEQ.W    .NoDos
  27.         MOVEA.L    D0,A4            * A4 is DosBase
  28.  
  29.         * open source file
  30.         MOVEA.L    A4,A6
  31.         CLR.B    -1(A5,D7)        * clear return
  32.         MOVE.L    A5,D1
  33.         JSR    _LVOLoadSeg(A6)
  34.         LEA    xfdsi(PC),A5        * A5 is xfdsi/SegList ptr
  35.         MOVE.L    D0,(A5)            * store SegList
  36.         BEQ.B    .NoSeg
  37.  
  38.         * call recog functions
  39.         MOVEA.L    ForeMan+xfdf_FirstSlave(PC),A2
  40. .recogloop    MOVE.L    A2,D0                * for test purpose
  41.         BEQ.B    .notfound
  42.         MOVEA.L    (A5),A0            * SegList Argument
  43.         MOVEA.L    xfds_RecogSegment(A2),A3
  44.         MOVE.L    A3,D0
  45.         BEQ.B    .next
  46.         JSR    (A3)
  47.         TST.L    D0
  48.         BNE.B    .found
  49. .next        MOVEA.L    xfds_Next(A2),A2
  50.         BRA.B    .recogloop
  51. .found        * call decrunch function
  52.  
  53.         LEA    FormatStr(PC),A0
  54.         MOVE.L    A0,D1
  55.         LEA    xfds_PackerName(A2),A0
  56.         MOVE.L    A0,D2
  57.         JSR    _LVOVPrintf(A6)
  58.  
  59.         MOVEA.L    A5,A0
  60.         MOVEA.L    xfds_DecrunchSegment(A2),A3
  61.         LEA    -xfdMasterBase_SIZE(A7),A7
  62.         MOVE.L    4.W,xfdm_ExecBase(A7)
  63.         MOVE.L    A4,xfdm_DosBase(A7)
  64.         MOVE.L    A7,A6            * create ExeBase ptr
  65.         JSR    (A3)
  66.         LEA    xfdMasterBase_SIZE(A7),A7
  67.         MOVE.L    (A5),D1
  68.         BEQ.B    .NoSeg
  69.  
  70.         MOVE.L    A4,A6            * set DOSBase
  71.  
  72.         MOVE.L    #4096,D2        * stacksize
  73.         LEA    ArgStr(PC),A0
  74.         MOVE.L    A0,D3
  75.         MOVEQ    #1,D4
  76.         JSR    _LVORunCommand(A6)
  77.  
  78. .notfound    MOVEA.L    SegList(PC),D1
  79.         JSR    _LVOUnLoadSeg(A6)
  80. .NoSeg        MOVEA.L    A4,A1            * close dos
  81.         MOVEA.L    4.W,A6
  82.         JSR    _LVOCloseLibrary(A6)
  83. .NoDos        RTS
  84.  
  85. xfdsi
  86. SegList        DC.L    0
  87.         DC.L    0
  88.         DC.L    0
  89.         DC.W    XFDPFF_RELOC,XFDERR_OK
  90.         DC.L    0
  91.         DC.W    XFDREL_DEFAULT
  92. Flags        DC.W    0
  93.  
  94. DosName     DC.B    "dos.library",0
  95. FormatStr    DC.B    'Cruncher-Name: %s'
  96. ArgStr        DC.B    $A,0
  97.         EVEN
  98.  
  99.